/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Modelo.Algoritmos;

import java.io.File;
import java.util.ArrayList;


/**
 *
 * @author WALTER
 */

public class NewMain {

   public static int HORNEADO=1;
   public static int DECORADO=2;
   public static int RELLENADO=3;
   public static int EMPAQUETADO=4; 
   public static int GNORMAL = 10;
   public static int GRELLENA = 11;
   public static int GDECORADA = 12;
   

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        LeeDatos leedatos = new LeeDatos();
        CreaData creadata = new CreaData();
        Grasp grasp = new Grasp();
        Recocido recocido = new Recocido();
        
//       creadata.crearPedido();  
//      creadata.crearEmp(args);
        leedatos.ArchivoPedidos = new File("Pedidoss.txt");
        leedatos.NumPedido= 1;
       
        ArrayList<Integer> a = new ArrayList();
          a.add(HORNEADO);
          a.add(EMPAQUETADO);
        
        ArrayList<Integer> b = new ArrayList();
          b.add(HORNEADO);
          b.add(RELLENADO);
          b.add(EMPAQUETADO);
          
        ArrayList<Integer> c = new ArrayList();
            c.add(HORNEADO);
             c.add(DECORADO);
              c.add(EMPAQUETADO);
              
        ArrayList<Float> porp1 = new ArrayList();
        porp1.add(0.6f);
        porp1.add(0.4f);
        
        ArrayList<Float> porp2 = new ArrayList();
         porp2.add(0.4f);
         porp2.add(0.4f);
         porp2.add(0.2f);
         
         ArrayList<Float> porp3 = new ArrayList();
          porp3.add(0.3f);
          porp3.add(0.5f);
          porp3.add(0.2f);
      
          ArrayList<Float> porc1 = new ArrayList();
           porc1.add(0.5f);
           porc1.add(0.5f);
//            porc1.add(0.6f);
//        porc1.add(0.4f);
           
           ArrayList<Float> porc2 = new ArrayList();
            porc2.add(0.5f);
            porc2.add(0.3f);
            porc2.add(0.2f);
//             porc2.add(0.4f);
//         porc2.add(0.4f);
//         porc2.add(0.2f);
//            
            ArrayList<Float> porc3 = new ArrayList();
             porc3.add(0.2f);
             porc3.add(0.4f);
             porc3.add(0.3f);
      
//                porc3.add(0.3f);
//          porc3.add(0.5f);
//          porc3.add(0.2f);
        TipoGalleta normal = new TipoGalleta(GNORMAL,a,porp1,porc1,10,1);
        TipoGalleta rellena = new TipoGalleta(GRELLENA, b, porp2, porc2, 13,1);
        TipoGalleta decorada = new TipoGalleta(GDECORADA,c,porp3,porc3, 14,9);
        
        int[] ini1 = {100,100};
          int[] ini2 = {100,100,100};
          int[] ini3 = {100,100,100};
          
          
       ArrayList<Galleta> galletas = leedatos.leeGalletasIniciales();
       galletas.get(0).setTipogalleta(normal);
       galletas.get(0).setInv_ini_proc(ini1);
      
     galletas.get(1).setTipogalleta(rellena);
      galletas.get(1).setInv_ini_proc(ini2);
      galletas.get(2).setTipogalleta(decorada);
      galletas.get(2).setInv_ini_proc(ini3);
      
      galletas.get(0).calcDemMaqPedido();
      galletas.get(1).calcDemMaqPedido(); 
      galletas.get(2).calcDemMaqPedido();
      
      ArrayList<MaquinaA> maquina1 = new ArrayList();
        ArrayList<MaquinaA> maquina2 = new ArrayList();
         ArrayList<MaquinaA> maquina3= new ArrayList();
          ArrayList<MaquinaA> maquina4 = new ArrayList();
          
//          Maquina maq1 = new Maquina(1,HORNEADO,0);
//          Maquina maq2 = new Maquina(2,EMPAQUETADO,0);
//          Maquina maq3 = new Maquina(3,HORNEADO,0);
//          Maquina maq4 = new Maquina(4,DECORADO,0);
//          Maquina maq5 = new Maquina(5,EMPAQUETADO,0);
//          Maquina maq6 = new Maquina(6,HORNEADO,0);
//          Maquina maq7 = new Maquina(7,RELLENADO,0);
//          Maquina maq8 = new Maquina(8,EMPAQUETADO,0);
//          Maquina maq9 = new Maquina(9,RELLENADO,0);
//          Maquina maq10 = new Maquina(10,DECORADO,0);
//          
          for(int i =0;i < 60 ;i++){
              MaquinaA maq = new MaquinaA(i+1,HORNEADO,0);
          MaquinaA maq2 = new MaquinaA(i+1,DECORADO,0);
          MaquinaA maq3 = new MaquinaA(i+1,RELLENADO,0);
          MaquinaA maq4 = new MaquinaA(i+1,EMPAQUETADO,0);
          maquina1.add(maq);
          maquina2.add(maq2);
          maquina3.add(maq3);
          maquina4.add(maq4);
          }
//          
//          maquina1.add(maq1);
//          maquina1.add(maq3);
//          maquina1.add(maq6);
//          maquina2.add(maq4);
//          maquina2.add(maq10);
//          maquina3.add(maq7);
//          maquina3.add(maq9);
//          maquina4.add(maq2);
//          maquina4.add(maq5);
//          maquina4.add(maq8);
          
         
          
          Maquinas maquinas = new Maquinas(maquina1, maquina2, maquina3, maquina4);
     // ArrayList<Empleado> empleados = leedatos.leeEmpleadosPorArchivo("Empleados2.txt");
        // TODO code application logic here
       for(int j=0;j < 1;j++){
           
           ArrayList<EmpleadoAlgoritmo> empleados = leedatos.leeEmpleadosPorArchivo("Empleados"+j+".txt");
           Solucion solgrasp = grasp.grasp_run(empleados, galletas, maquinas);
           System.out.println("SOlUCION DEL GRASP");
           solgrasp.mostrarsol(solgrasp);
      
           System.out.println("*******************");
       
       
    Solucion solrecocido = recocido.recocido_run(empleados, galletas, maquinas);
          solrecocido.mostrarsol(solrecocido);
       }

    }
}
